home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / ctlib100.zip / INSTALL.LZH / ARRAYS3.PAS < prev    next >
Pascal/Delphi Source File  |  1996-10-12  |  3KB  |  104 lines

  1. {**************************************************************************}
  2. {*  BitSoft Development, L.L.C.                                           *}
  3. {*  Copyright (C) 1995, 1996 BitSoft Development, L.L.C.                  *}
  4. {*  All rights reserved.                                                  *}
  5. {*  Containers Library demo                                               *}
  6. {**************************************************************************}
  7.  
  8. program Arrays3;
  9.  
  10. {$X+}
  11.  
  12. { Sample program for using a standard object array }
  13.  
  14. uses Objects, Containr, ctArrays,
  15.      {$ifdef Windows}
  16.      WinCtr;
  17.      {$else}
  18.      Crt;
  19.      {$endif}
  20.  
  21. type
  22.   PWeatherInfo = ^TWeatherInfo;
  23.   TWeatherInfo = object(TObject)
  24.       Location : PString;
  25.       Humidity : Integer;
  26.       Rain : Integer;
  27.     constructor Init(ALocation : string; AHumidity, ARain : Integer);
  28.     destructor Done; virtual;
  29.   end; { TWeatherInfo }
  30.  
  31. constructor TWeatherInfo.Init(ALocation : string; AHumidity, ARain : Integer);
  32. begin
  33.   Location := NewStr(ALocation);
  34.   Humidity := AHumidity;
  35.   Rain := ARain;
  36. end;
  37.  
  38. destructor TWeatherInfo.Done;
  39. begin
  40.   DisposeStr(Location);
  41. end;
  42.  
  43. procedure DisplayWeatherData(WeatherData : PSequence);
  44. var
  45.   i : Integer;
  46. begin
  47.   with WeatherData^ do
  48.     for i := FirstIndex to LastIndex do
  49.       with PWeatherInfo(At(i))^ do
  50.         writeln('Hour: ', i:2, ':00', '':3, Location^, '':20 -
  51.           Length(Location^), Humidity, '':5, Rain:5);
  52. end;
  53.  
  54. procedure FindLowHumidityValue(WeatherData : PSequence);
  55. var
  56.   Item : Pointer;
  57.   Index : LongInt;
  58.  
  59.   function HasLowHumidity(Item : PWeatherInfo) : Boolean; far;
  60.   begin
  61.     HasLowHumidity := (Item^.Humidity < 22);
  62.   end;
  63.  
  64. begin
  65.   Item := WeatherData^.FirstThat(@HasLowHumidity, Index);
  66.   writeln ('First with low humidity (H < 22):');
  67.   with PWeatherInfo(Item)^ do
  68.     writeln('Hour: ', Index:2, ':00', '':3, Location^, '':20 -
  69.       Length(Location^), Humidity, '':5, Rain:5);
  70. end;
  71.  
  72. var
  73.   MorningWeatherData : PStdObjectArray;
  74.   WeatherInfo: TWeatherInfo;
  75.  
  76. begin
  77.   ClrScr;
  78.  
  79.   { Create the array }
  80.   MorningWeatherData := New(PStdObjectArray, Init(7, 11,
  81.     SizeOf(TWeatherInfo)));
  82.  
  83.   { Insert the items in the array }
  84.   with MorningWeatherData^ do
  85.   begin
  86.     WeatherInfo.Init('Miami', 34, 0);
  87.     AtInsert(7, @WeatherInfo);
  88.     WeatherInfo.Init('Helsinski', 23, 3);
  89.     AtInsert(8, @WeatherInfo);
  90.     WeatherInfo.Init('Canada', 26, 2);
  91.     AtInsert(9, @WeatherInfo);
  92.     WeatherInfo.Init('Berlin', 28, 5);
  93.     AtInsert(10, @WeatherInfo);
  94.     WeatherInfo.Init('Melbourne', 20, 0);
  95.     AtInsert(11, @WeatherInfo);
  96.   end; { with }
  97.  
  98.   DisplayWeatherData(MorningWeatherData);
  99.   writeln;
  100.   FindLowHumidityValue(MorningWeatherData);
  101.  
  102.   { Dispose of the array }
  103.   Dispose(MorningWeatherData, Done);
  104. end.